<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // // 字面量
        // let regExp1 = /E/i;
        // // 构造函数
        // let regExp2 = new RegExp('abc', 'i')

        // // 验证字符串 test()
        // let str = "hello";
        // console.log(regExp1.test(str));


        // 1. 中括号：包含中括号中的任意一个字符即可
        // let regExp = /[abc123]/  // 要求必须包含abc123中的任意一个
        // let regExp = /[^abc123]/    // 要求包含除了abc123以外的任意一个字符
        // let regExp = /[0-9]/    // 要求字符串中至少包含一个数字
        // let regExp = /[a-z]/    // 要求字符串中至少包含一个小写字母
        // let regExp = /[A-Z]/    // 要求字符串中至少包含一个大写字母
        // let regExp = /[a-zA-Z]/    // 要求字符串中至少包含一个字母
        // let regExp = /[a-z][A-Z]/;


        // 2. 元字符：
        // \d和\D
        // \d：表示包含任意数字，等同于[0-9]
        // \D：表示包含除了数字以外的任意字符，等同于[^0-9]

        // \w和\W：
        // \w：表示包含任意数字字母下划线，等同于[0-9a-zA-Z_]
        // \W：表示包含除了数字字母下划线以外的其他字符，等同于[^0-9a-zA-Z_]

        // \s和\S：
        // \s：匹配空白字符（空格）
        // \S：匹配除了空格以外的其他字符

        // let regExp = /[\d\D]/;  // 匹配任意字符


        // 3. 量词：控制指定的字符出现的次数
        // +：至少1个
        // *：0个或多个
        // ?：0个或1个
        // {数量}:指定个数
        // {最小值,}：至少有指定个数
        // {最小值,最大值}：包含最小值-最大值之间的任意个数

        // let regExp = /a+/;
        // let regExp = /(abc)+/;
        // let regExp = /(abc)*/;
        // let regExp = /(abc)?/;
        // let regExp = /a{5}/;   // 包含连续的5个a
        // let regExp = /a{5,}/;   // 包含至少连续的5个a
        // let regExp = /a{5,7}/;   // 包含连续的5-7个a
        // let regExp = /(abc){5,7}d/;   


        // 4. 开始和结束
        // ^：以指定字符开头
        // $：以指定字符结尾
        // let regExp = /^a{2}/;   // 以2个a开头
        // let regExp = /a{2}$/;   // 以2个a结尾

        // let regExp = /^a{3}$/

        // let regExp = /^1[3589]\d{9}$/
        // console.log(regExp.test('12511111111'));

        // 密码：6-20位，可以包含数字字母下划线，必须以大写字母开头
        // let regExp = /^[A-Z]\w{5,19}$/
        // console.log(regExp.test("Abc123123"));
        // 邮箱
        // let emailReg = /^[0-9a-zA-Z]{3,10}@((qq)|(163))\.com$/;

        // console.log(emailReg.test("123abc@qq.com"));


        // let regExp = /./;
        // console.log(regExp.test("abc"));
        // console.log(regExp.test("\n"));

        // let regExp = /a|b/;
        // console.log(regExp.test("a"));

        // let regExp = /(cat)|(dog)/;
        // let regExp = /a\?/;
        // console.log(regExp.test("a?"));


        let regExp = /hello/gi;
        let str = "hi, hello, my name is hanmeimei, hello";

        console.log(str.search(regExp));  // 返回下标
        console.log(str.match(regExp));   // 返回对应的值
        console.log(str.replace(regExp, '你好'));  // 替换
        


        // console.log(regExp.test("Hello"));




    </script>
</body>

</html>